package service

import (
	"context"
	"gitee.com/hxchjm/go-admin/internal/dao"
	"gitee.com/hxchjm/go-admin/internal/models"
	"gitee.com/hxchjm/go-admin/pkg/jwtauth"
	"github.com/hxchjm/log"
)

type Api struct {
}

// GetPage 获取接口管理列表
// @Summary 获取接口管理列表
// @Description 获取接口管理列表
// @Tags 接口管理
// @Param name query string false "名称"
// @Param title query string false "标题"
// @Param path query string false "地址"
// @Param action query string false "类型"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} response.Response{data=response.Page{list=[]models.SysApi}} "{"code": 200, "data": [...]}"
// @Router /api/v1/sys-api [get]
// @Security Bearer
func (e Api) GetPage(ctx context.Context, req *models.ReqApiGetPage) (*models.RspApiGetPage, error) {
	//数据权限检查
	var count int64
	list, count, err := (dao.SysApi{}).GetPage(ctx, req)
	if err != nil {
		log.Errorf(ctx, "查询失败,err(%+v)", err)
		return nil, nil
	}
	rsp := &models.RspApiGetPage{
		Total: int(count),
		Page:  req.Page,
		Size:  req.Size,
		List:  list,
	}
	return rsp, nil
}

// Get 获取接口管理
// @Summary 获取接口管理
// @Description 获取接口管理
// @Tags 接口管理
// @Param id path string false "id"
// @Success 200 {object} response.Response{data=models.SysApi} "{"code": 200, "data": [...]}"
// @Router /api/v1/sys-api/{id} [get]
// @Security Bearer
func (e Api) Get(ctx context.Context, req *models.ReqApiGet) (any, error) {
	res, err := (dao.SysApi{SysApi: models.SysApi{Id: req.Id}}).Get(ctx)
	if err != nil {
		log.Errorf(ctx, "查询失败")
		return nil, err
	}
	return res, nil
}

// Update 修改接口管理
// @Summary 修改接口管理
// @Description 修改接口管理
// @Tags 接口管理
// @Accept application/json
// @Product application/json
// @Param data body dto.SysApiUpdateReq true "body"
// @Success 200 {object} response.Response	"{"code": 200, "message": "修改成功"}"
// @Router /api/v1/sys-api/{id} [put]
// @Security Bearer
func (e Api) Update(ctx context.Context, req *models.ReqApiUpdate) (any, error) {
	req.UpdateBy = jwtauth.GetClaims(ctx).UID
	if err := (dao.SysApi{SysApi: *req}).Update(ctx); err != nil {
		log.Errorf(ctx, "SysApi  Update err (%+v)", err)
		return nil, err
	}
	return nil, nil
}

// Delete 删除接口管理
// @Summary 删除接口管理
// @Description 删除接口管理
// @Tags 接口管理
// @Param data body dto.SysApiDeleteReq true "body"
// @Success 200 {object} response.Response	"{"code": 200, "message": "删除成功"}"
// @Router /api/v1/sys-api [delete]
// @Security Bearer
func (e Api) Delete(ctx context.Context, req *models.ReqApiDelete) (any, error) {
	if err := (dao.SysApi{}).Delete(ctx, req.Ids); err != nil {
		return nil, err
	}
	return nil, nil
}
